import axios from '../utils/axios'
import apis from '../apis'
const toTree = (data)=>{
	var rs = {};
	for(var i=0;i<data.length;i++){
		var permission = data[i];
//		console.log(permission);
		if(permission.parentid==0){
			permission.children = [];
			rs[permission._id] = permission;
		}
	}
	for(let i=0;i<data.length;i++){
		var permission = data[i];
		for(var key in rs){
			if(permission.parentid == key){
				rs[key].children.push(permission)
			}
		}
	}
	return rs;
//	console.log("树形结构");
//	console.log(rs);
}
// 存储所有和system模块相关的所有状态
const state = {
	allMenus:[],  //当前角色所有权限
	allPermissions:[],   //所有的权限,该选项只有在系统管理员角色下才会存在
	allGames:[],      //所有彩种
}

//vuex的每一个模块都有和store对象一样的属性和方法,在NavMenu.vue里执行
const getters = {
	allMenus(state){
		return toTree(state.allMenus);
	},
	allPermissions(state){
		return toTree(state.allPermissions);  //返出去数据
	},
	allGames(state){
		return state.allGames;
	}
	
}

// 所有同步修改的状态的行为都在mutations提供的函数里进行
const mutations = {
	LOADALLMUNUS(state,payload){
//		alert('niho');
		state.allMenus = payload;
	},
	LOADALLPERMISSIONS(state,payload){
		state.allPermissions = payload;
	},
	LOADALLGAMES(state,payload){
		state.allGames = payload;
// 		console.log(state.allGames);
	},
}
// 在这里进行异步数据请求,然后将请求到的数据提交到mutations里的函数进行状态的变更
const actions = {
    // 获取所有权限
    loadAllPermission({commit},payload){
        // 发起请求,加载所有的权限		需要带token,拦截器401
        axios.get(apis.findAllPermission)
        .then((resp)=>{
//          console.log("权限数据在这里");
//          console.log(resp.data);
//          console.log(resp.data.allPermission);
            //提交
            commit('LOADALLPERMISSIONS',resp.data.allPermission)  
        })
    },
    // 获取所有彩种
    loadAllGame({commit},payload){
        // 发起请求,加载所有的权限        需要带token,拦截器401
        axios.get(apis.findAllGames)
        .then((resp)=>{
//      	console.log("彩票数据在这里");
//          console.log(resp.data.data[0]);
//          console.log(resp.data.data[0].games);
            //提交
            commit('LOADALLGAMES',resp.data.data[0].games)  
        })
    },
}

export default{
	getters,
    state,
    mutations,
    actions
}
